﻿using System;
using System.Collections.Generic;
using System.Text;
using BussinessLogicTecnoPez;
using Microsoft.Practices.EnterpriseLibrary.Validation.Validators;
using BussinessLogicTecnoPez.Tipos_Comunes;
using BussinessLogicTecnoPez.Produccion.Enfermedades_y_control_de_estanques;

namespace BussinessLogicTecnoPez.Produccion.Compras
{
    [Serializable]
    [DBTable("INSUMOS")]
    public class Insumo : EntityBase<Insumo>
    {
        private int _idInsumo;
        private string _descripcion;
        private TipoInsumo _objTipoInsumo;

        [FriendlyName("Código", true, true, FriendlyName.FilterType.Integer)]
        [DBField("IDINSUMO", true, true)]
        public int IdInsumo
        {
            get { return _idInsumo; }
            set { _idInsumo = value; }
        }


        [NotNullValidator(MessageTemplate = "Descripción: Debe tener algun valor.")]
        [StringLengthValidator(0, 50, MessageTemplate = "Descripción: Tamaño máximo es de 50 carateres.")]
        [TecnoPezNoEmptyStringValidator("Descripción: Debe tener algun valor.")]
        [FriendlyName("Descripción", true, true, FriendlyName.FilterType.String)]
        [DBField("DESCRIPCION", false, false)]
        public string Descripcion
        {
            get { return _descripcion; }
            set { _descripcion = value; }
        }

        [NotNullValidator(MessageTemplate = "Tipo insumo: Debe tener algun valor.")]
        [FriendlyName("Tipo Insumo", true)]
        [DBField("IDTIPOINSUMO", false, false, true, "IDTIPOINSUMO")]
        public TipoInsumo TipoInsumo
        {
            get { return _objTipoInsumo; }
            set { _objTipoInsumo = value; }
        }

        
        private UnidadMedida unidadDeMedida;
        [NotNullValidator(MessageTemplate = "Unidad de medida: Debe tener algun valor.")]
        [FriendlyName("Unidad de Medida", true)]
        [DBField("IDUNIDADMEDIDA",false,false,true,"IDUNIDADMEDIDA")]
        public UnidadMedida UnidadDeMedida
        {
            get { return unidadDeMedida; }
            set { unidadDeMedida = value; }
        }

        public override string ToString()
        {
            return this.Descripcion + " (" + this.UnidadDeMedida.ToString() + ")";
        }
    }
}
